import observe from "./observe";

//定义响应式数据
//目的：将title/classNum/total/teacher/students属性定义getter/setter方法实时监控属性内容
function defineReactiveData(data, key, value) {
  //递归深度拦截
  observe(value);

  Object.defineProperty(data, key, {
    get() {
      console.log('响应式数据：获取 ' + value);
      return value;
    },
    set(newValue) {
      console.log('响应式数据：修改 ' + newValue);
      if (newValue === value) return;

      //newValue不知道是否对象，如果是也要进行数据劫持拦截
      observe(newValue);

      value = newValue;
    }
  })
}

export default defineReactiveData;